#ifndef FANTASMA_H
#define FANTASMA_H

#include "ObjetoVivo.h"
#include "Pacman.h"
#include "EstrategiaMovimientoFantasma.h"
#include "Punto.h"

class Fantasma : public ObjetoVivo {

	private:
        EstrategiaMovimientoFantasma* estrategiaMovimientoOriginal;
		EstrategiaMovimientoFantasma* estrategiaMovimiento;
		Pacman* presa ;
        Pacman* presaOriginal;
		int contador;
        bool regresandoACueva;
		bool estaSiendoCazado;
        

	public:

        Fantasma(EstrategiaMovimientoFantasma* unaEstrategiaMovimiento, Punto* unPunto, unsigned int unRadio, bool vivo, Pacman* presaAPerseguir );

		virtual void vivir();

		EstrategiaMovimientoFantasma* getEstrategiaMovimiento();

        void setEstrategiaMovimiento(EstrategiaMovimientoFantasma* unaEstrategiaMovimiento);

		void setPresa(Pacman* unaPresa);
            
        void colisionarConPacman(ObjetoVivo* unObjetoVivo);

        void colisionarConFantasma(ObjetoVivo* unObjetoVivo);

        Pacman* getPresaOriginal();

		Pacman* getPresa();

        void cambiarALaPresaOriginal();

		bool isSiguiendoPresaOriginal();

        void volverALaestrategiaMovimientoOriginal();

		void setEstaSiendoCazado(bool valor);

		void setRegresandoACueva(bool valor);

		bool isSiendoCazado();

		bool isRegresandoACueva();

		~Fantasma();
};

#endif